package TP2.implementation;

import TP2.NodoLista;
import TP2.TDA.ConjuntoTDA;

/**
 * Los elementos se agregan al comienzo de la lista.
 * Elegir devuelve siempre el primer elemento de la lista.
 * Vacio se fija si cant es cero.
 * Pertenece recorre toda la lista buscandolo.
 */
public class ConjuntoTamNoAcotListaImpl1 implements ConjuntoTDA {
	NodoLista lista;
	int cant;

	public void agregar(int x) {
		if (!pertenece(x)) {
			NodoLista nuevo = new NodoLista(x, lista);
			lista = nuevo;
			cant++;
		}
	}

	public void sacar(int x) {
		NodoLista aux = lista;
		NodoLista prev = null;

		while (aux != null && aux.getContenido() != x) {
			prev = aux;
			aux = aux.getSgte();
		}
		if (aux != null) { // El elemento petenece
			if (prev != null) {
				prev.setSgte(aux.getSgte());
			} else {
				lista = lista.getSgte();
			}
			cant--;
		}
	}

	public int elegir() {
		return lista.getContenido();
	}

	public boolean pertenece(int x) {
		NodoLista aux = lista;
		while (aux != null && aux.getContenido() != x) {
			aux = aux.getSgte();
		}
		return (aux != null);
	}

	public boolean vacio() {
		return (cant == 0);
	}

	public void inicializar() {
		cant = 0;
		lista = null;
	}

}
